package controlador;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;

import modelo.CategoriaDAO;
import modelo.Cliente;
import modelo.ClienteDAO;
import modelo.Conexion;
import modelo.Producto;
import vista.FormCliente;

public class ControlCliente implements ActionListener{
	
	private FormCliente fcli;
	
	public ControlCliente()
	{
		super();
		
		this.fcli = new FormCliente();
		this.fcli.addlistener(this);
	    this.fcli.setVisible(true);
	    fcli.setLocationRelativeTo(null);
	    Limpiar();
	    fcli.EnabledBntEliminar(false);
		fcli.EnabledbntGuardar(false);
		fcli.GetTextRif().enable(true);
		fcli.GetTextNombre().enable(false);
		fcli.GetTextApellido().enable(false);
		fcli.GetTextDireccion().enable(false);
		fcli.GetTextTelefono().enable(false);
		fcli.GetTextemail().enable(false);   
	}  
	
	public void Limpiar()
	{
		fcli.SetTextRif("");
	    fcli.SetTextNombre("");
	    fcli.SetTextApellido("");
	    fcli.SetTextDireccion("");
	    fcli.SetTextTelefono("");
	    fcli.SetTextemail("");
    }
	
	public boolean BuscarCliente(boolean most)
	{
		if(fcli.GetTextRif().getText().equals(""))
		{
			fcli.mostrarMensaje("Ingrese el RIF por favor!");
	        return false;
		}
		else
		{
			try
			{
				ClienteDAO DAO = new ClienteDAO();
				ResultSet registro = DAO.BuscarCliente(fcli.GetTextRif().getText());
	    		if(registro.next())
	    		{
	    			String rif = registro.getString("rif");
					String nombre = registro.getString("nombre");
					String apellido = registro.getString("apellido");
					String direccion = registro.getString("direccion");
					String telefono = registro.getString("telefono");
					String correoelectronico = registro.getString("correoelectronico");
					Cliente cliente = new Cliente(rif,nombre, apellido,direccion,telefono,correoelectronico);
					fcli.SetTextRif(rif);
					fcli.SetTextNombre(nombre);
					fcli.SetTextApellido(apellido);
					fcli.SetTextDireccion(direccion);
					fcli.SetTextTelefono(telefono);
					fcli.SetTextemail(correoelectronico);
					fcli.EnabledBntEliminar(true);
					fcli.EnabledbntBuscar(false);
					fcli.EnabledbntGuardar(false);
					fcli.EnabledbntCancelar(true);
					fcli.GetTextRif().enable(false);
		    		fcli.GetTextNombre().enable(false);
		    		fcli.GetTextApellido().enable(false);
		    		fcli.GetTextDireccion().enable(false);
		    		fcli.GetTextTelefono().enable(false);
		    		fcli.GetTextemail().enable(false);
					return true;
	    		}
	    		else if(most)
	    		{
    				fcli.mostrarMensaje("No existe el Cliente con este código!");
    			    fcli.EnabledbntGuardar(true);
    			    fcli.EnabledBntEliminar(false);
    				fcli.GetTextRif().enable(false);
    				fcli.GetTextNombre().enable(true);
    				fcli.GetTextApellido().enable(true);
    				fcli.GetTextDireccion().enable(true);
    				fcli.GetTextTelefono().enable(true);
    				fcli.GetTextemail().enable(true);   
    				return false;	
	    		}
    	    }
			catch (SQLException f) {
				f.printStackTrace();
			}
		return false;
		}
	}
	
	void GuardarCliente(){
		
		if(!(fcli.GetTextRif().getText().equals("")||fcli.GetTextNombre().getText().equals("")||fcli.GetTextApellido().getText().equals("")||fcli.GetTextDireccion().getText().equals("")||fcli.GetTextTelefono().getText().equals("")||fcli.GetTextemail().getText().equals("")) )         
		{	
			Cliente cliente= new Cliente
	 		(fcli.GetTextRif().getText(),
	 		fcli.GetTextNombre().getText(),
	 		fcli.GetTextApellido().getText(),
	 		fcli.GetTextDireccion().getText(),
	 		fcli.GetTextTelefono().getText(),
	 		fcli.GetTextemail().getText());
			
			ClienteDAO DAO = new ClienteDAO();
    		DAO.RegistrarCliente(cliente.getRif(),cliente.getNombre(), cliente.getApellido(), cliente.getDireccion(), cliente.getTelefono(), cliente.getCorreoelectronico());
    		
    		fcli.mostrarMensaje("Cliente registrado con éxito!");
		    Limpiar();
			fcli.EnabledbntGuardar(false);
			fcli.GetTextRif().enable(true);
			fcli.GetTextNombre().enable(false);
			fcli.GetTextApellido().enable(false);
			fcli.GetTextDireccion().enable(false);
			fcli.GetTextTelefono().enable(false);
			fcli.GetTextemail().enable(false);  
		   }
		   else fcli.mostrarMensaje("Llene todos los campos!");
	}
	
	public void EliminarCliente(){
		ClienteDAO DAO = new ClienteDAO();
		DAO.EliminarCliente(fcli.GetTextRif().getText());
		
		fcli.mostrarMensaje("El cliente fue eliminado con éxito!");
		Limpiar();
		fcli.GetTextRif().enable(true);
    	fcli.GetTextNombre().enable(false);
    	fcli.GetTextApellido().enable(false);
    	fcli.GetTextDireccion().enable(false);
    	fcli.GetTextTelefono().enable(false);
    	fcli.GetTextemail().enable(false); 
	    fcli.EnabledBntEliminar(false);
	    fcli.EnabledbntBuscar(true);
	}
	
	public void actionPerformed(ActionEvent e) {
		
		if(e.getActionCommand().equals("B"))
			BuscarCliente(true); 
		else if (e.getActionCommand().equals("Guardar"))
			GuardarCliente();
		else  if (e.getActionCommand().equals("Eliminar"))
		     EliminarCliente();
		if (e.getActionCommand().equals("Cancelar"))
		{
			Limpiar();
			fcli.EnabledBntEliminar(false);
			fcli.EnabledbntBuscar(true);
			fcli.EnabledbntGuardar(false);
			fcli.GetTextRif().enable(true);
			fcli.GetTextNombre().enable(false);
			fcli.GetTextApellido().enable(false);
			fcli.GetTextDireccion().enable(false);
			fcli.GetTextTelefono().enable(false);
			fcli.GetTextemail().enable(false);      
		}
		else if(e.getActionCommand().equals("S"))
			fcli.dispose();
	}
}

